package jdbc;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/add")
public class Se1 extends HttpServlet {

	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		resp.setContentType("text/html;charset=utf-8");
		
		/**
		 *     使用JDBC向数据库中添加一行数据   
		 *     一、准备数据
		 *     二、操作数据库
		 * 
		 */
		
		/**
		 *     一、准备数据  自建一个对象 用于临时存储要往数据库中存储的数据
		 */
		User user = new User("8", "5", "5", "5", "5", "5", null, "5", 5, "5");
				
				
		/**
		 * 操作数据库
		 * 1、准备数据库连接资源  连接地址  数据库用户名  数据库密码   驱动程序地址（mysql提供给java一套类和工具用于操作数据库 驱动程序地址就是他们所在的位置  ）
		 * 2、注册驱动程序（在执行JDBC的API之前现将这一套工具执行起来）
		 * 3、建立连接
		 * 4、创建一个动态SQL语句（jdbc代码中将数据库的sql用字符串拼接的形式完成，动态SQL语句的作用就是整理sql语句并发送给mysql）
		 * 5、执行SQL（通知mysql执行SQL语句）
		 * 6、处理结果
		 * 7、关闭连接
		 * 		
		 */
				
				
				
//			1、准备连接资源 	  连接地址  数据库用户名  数据库密码   驱动程序地址
//		数据库连接地址
		String SQLUrl = "jdbc:mysql://localhost:3306/mmshop?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai";
//		驱动程序 运行在JDBC建立连接之前
		String driver = "com.mysql.cj.jdbc.Driver";
//		用户名和密码
		String uname = "root";
		String pwd = "123456";
		
//		操作数据库    一定要进行异常处理
		try {
			
//			2、注册驱动程序  要让驱动程序运行在JDBC建立连接之前 Class.forName 接受参数：驱动程序字符串
			Class.forName(driver);
//			3、建立连接  DriverManager是JDBC驱动程序管理类   getConnection方法用于建立与mysql的连接  
//			getConnection接受三个字符串参数：mysql连接地址   mysql用户名   mysql密码 
//			返回值是一个mysql连接对象
			Connection connection = DriverManager.getConnection(SQLUrl,uname,pwd);
//			3、1编写SQL语句 一定要使用字符串
			
			String  sql = "INSERT INTO user(uid,username,password,name,email,telephone,sex,state,code) \r\n" + 
					"VALUES("
					+ "'"+user.getUid()+"',"
					+ "'"+user.getUname()+"',"
					+ "'"+user.getPwd()+"',"
					+ "'"+user.getName()+"',"
					+ "'"+user.getEmail()+"',"
					+ "'"+user.getTelPhone()+"',"
					+ "'"+user.getSex()+"',"
					+ "'"+user.getState()+"',"
					+ "'"+user.getCode()+"'"
					+ ")";
			System.out.println(sql);
			
//			4、将sql语句发送给mysql connection对象的prepareStatement方法，接受参数是sql语句字符串
			PreparedStatement statement = connection.prepareStatement(sql);
//			5、执行SQL语句 statement的executeUpdate方法用于执行mysql增删改三种语句  返回值是整型 表示被影响的行数
			int res = statement.executeUpdate();
//			6、处理结果
			if (res>=1) {
				resp.getWriter().write("插入成功");
			}else {
				resp.getWriter().write("插入失败");
			}
//			7、关闭资源
			statement.close();
			connection.close();
			
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
				
				
				
				
				
				
				
				
				
				
				
				
				
				
		
	}
	
}
